#include <stdint.h>
#include "HT162X_Lcd.h"
#include "HT162X_Parts.h"

#ifndef HT162X_H
#define HT162X_H


//HT Com, 从高位到低位:依次是Com0~Com7
typedef enum
{
    HT_Com0 = 0x80,
    HT_Com1 = 0x40,
    HT_Com2 = 0x20,
    HT_Com3 = 0x10,
    HT_Com4 = 0x08,
    HT_Com5 = 0x04,
    HT_Com6 = 0x02,
    HT_Com7 = 0x01,
}HT_Com_E;
//HT Seg
typedef enum
{
    HT_Seg0 = 0,
    HT_Seg1,
    HT_Seg2,
    HT_Seg3,
    HT_Seg4,
    HT_Seg5,
    HT_Seg6,
    HT_Seg7,
    HT_Seg8,
    HT_Seg9,
    HT_Seg10,
    HT_Seg11,
    HT_Seg12,
    HT_Seg13,
    HT_Seg14,
    HT_Seg15,
    HT_Seg16,
    HT_Seg17,
    HT_Seg18,
    HT_Seg19,
    HT_Seg20,
    HT_Seg21,
    HT_Seg22,
    HT_Seg23,
}HT_Seg_E;

//Cad_LCD Pin
typedef enum
{
    Cad_Pin_1 = HT_Com0,
    Cad_Pin_2 = HT_Com1,
    Cad_Pin_3 = HT_Com2,
    Cad_Pin_4 = HT_Com3,
    Cad_Pin_5 = HT_Com4,
    Cad_Pin_6 = HT_Com5,
    Cad_Pin_7 = HT_Com6,
    Cad_Pin_8 = HT_Com7,
    Cad_Pin_9 = HT_Seg0,
    Cad_Pin_10 = HT_Seg1,
    Cad_Pin_11 = HT_Seg2,
    Cad_Pin_12 = HT_Seg3,
    Cad_Pin_13 = HT_Seg4,
    Cad_Pin_14 = HT_Seg5,
    Cad_Pin_15 = HT_Seg6,
    Cad_Pin_16 = HT_Seg7,
    Cad_Pin_17 = HT_Seg8,
    Cad_Pin_18 = HT_Seg9,
    Cad_Pin_19 = HT_Seg10,
    Cad_Pin_20 = HT_Seg11,
    Cad_Pin_21 = HT_Seg12,
    Cad_Pin_22 = HT_Seg13,
    Cad_Pin_23 = HT_Seg14,
    Cad_Pin_24 = HT_Seg15,
    Cad_Pin_25 = HT_Seg16,
    Cad_Pin_26 = HT_Seg17,
    Cad_Pin_27 = HT_Seg18,
    Cad_Pin_28 = HT_Seg19,
}Cad_Pin_E;
//Cad_LCD Com
typedef enum
{
    Cad_Com1 = Cad_Pin_1,
    Cad_Com2 = Cad_Pin_2,
    Cad_Com3 = Cad_Pin_3,
    Cad_Com4 = Cad_Pin_4,
    Cad_Com5 = Cad_Pin_5,
    Cad_Com6 = Cad_Pin_6,
    Cad_Com7 = Cad_Pin_7,
    Cad_Com8 = Cad_Pin_8,
}Cad_Com_E;

typedef struct
{
    Cad_Com_E Cad_Com;
    Cad_Pin_E Cad_Pin;
    Char_E Cad_Dis;
}Cad_Dat_S;
Cad_Dat_S Cad_Dat;


//外部引脚驱动接口
typedef struct
{
    void (*HT_CS_Handled)(uint8_t);
    void (*HT_WR_Handled)(uint8_t);
    void (*HT_RD_Handled)(uint8_t);
    void (*HT_Data_Handled)(uint8_t);
}HT162X_Device_S;
typedef struct 
{
    uint8_t address;
    uint8_t data;
}HT_Data_S;

void HT162X_Init(void);
//Tick 10ms
void HT162X_RAM_Tx(void);

void HT_RAM_Setting(Cad_Dat_S Cad_Dat);
void HT162X_RAM_Reset(void);

#endif
